int JosefProblem(int n,int m){
    list<int> circle;//初始化
    for (int i=1; i<=n; i++) {
        circle.push_back(i);
    }
    list<int>::iterator cur=circle.begin();//迭代器
    while (circle.size()>1) {
        //数到m的人出局
        for (int i=0; i<m-1; i++) {
            cur++;
            if (cur==circle.end()) {
                cur=circle.begin();//到尾的话改到头部
            }
        }
            //删除数到m的人，先记录下一个人的地址，再cur回退，到尾的话，回到头部
            list<int>::iterator next=++cur;  //注意i++与++
        if (next==circle.end()) {
            next=circle.begin();
        }
        cur--;
        circle.erase(cur);
        cur=next;
    }
    return circle.front();
}
